#ifndef ANALOGY_HPP_GUARD
#define ANALOGY_HPP_GUARD

#include "entity.hpp"

namespace mashine { namespace kb {

struct Analogy : Entity<std::string>
{
	
public:
	/**
	 * No call this constructor manualy
	 */
	Analogy();
	
	/**
	 * To manualy create analogy entity call THIS constructor
	 */
	Analogy(std::string name, std::string analog1, std::string analog2);
	Analogy(Analogy const & analogy);
	
	virtual ~Analogy();
		
	virtual std::string toString() const;
	
protected:
	/**
	 * need owerride this method in child class 
	 * to correct work Entity constructor
	 */
	virtual bool validateName() const;
	
	/**
	 * need owerride this method in child class 
	 * to correct work Entity constructor
	 */
	virtual bool validateParam() const;
};

}}

#endif